import { aiAnalysisService } from '../services/AIAnalysisService';
import { deepSeekAPI } from '../utils/DeepSeekAPI';

/**
 * AI分析功能测试脚本
 * 用于测试DeepSeek AI集成和股票分析功能
 */

async function testAIConnection() {
  console.log('🔍 测试DeepSeek API连接...');
  
  try {
    const isConnected = await deepSeekAPI.checkConnection();
    if (isConnected) {
      console.log('✅ DeepSeek API连接成功');
      return true;
    } else {
      console.log('❌ DeepSeek API连接失败');
      return false;
    }
  } catch (error) {
    console.error('❌ DeepSeek API连接测试失败:', error);
    return false;
  }
}

async function testStockAIAnalysis() {
  console.log('\n📊 测试个股AI分析功能...');
  
  try {
    // 使用股票ID 1 进行测试（假设数据库中存在）
    const stockId = 1;
    console.log(`正在分析股票ID: ${stockId}`);
    
    const analysis = await aiAnalysisService.getStockAIAnalysis(stockId, true);
    
    if (analysis) {
      console.log('✅ 个股AI分析成功');
      console.log('📈 分析结果:');
      console.log(`   综合评分: ${analysis.overallScore}/10`);
      console.log(`   风险等级: ${analysis.riskLevel}`);
      console.log(`   信心指数: ${analysis.confidenceLevel}/10`);
      console.log(`   投资建议: ${analysis.investmentAdvice.substring(0, 100)}...`);
      console.log(`   关键因素: ${analysis.keyFactors.slice(0, 2).join(', ')}`);
      return true;
    } else {
      console.log('❌ 个股AI分析返回空结果');
      return false;
    }
  } catch (error) {
    console.error('❌ 个股AI分析测试失败:', error);
    return false;
  }
}

async function testCategoryAIAnalysis() {
  console.log('\n🏢 测试大分类AI分析功能...');
  
  try {
    const categoryKey = 'a_stock';
    console.log(`正在分析大分类: ${categoryKey}`);
    
    const analysis = await aiAnalysisService.getCategoryAIAnalysis(categoryKey, true);
    
    if (analysis) {
      console.log('✅ 大分类AI分析成功');
      console.log('📊 分析结果:');
      console.log(`   市场评分: ${analysis.marketScore}/10`);
      console.log(`   趋势方向: ${analysis.trendDirection}`);
      console.log(`   热点板块: ${analysis.hotSectors.slice(0, 2).join(', ')}`);
      console.log(`   投资策略: ${analysis.investmentStrategy.substring(0, 100)}...`);
      return true;
    } else {
      console.log('❌ 大分类AI分析返回空结果');
      return false;
    }
  } catch (error) {
    console.error('❌ 大分类AI分析测试失败:', error);
    return false;
  }
}

async function testSimpleAIGeneration() {
  console.log('\n🤖 测试基础AI文本生成...');
  
  try {
    const response = await deepSeekAPI.generateText(
      '请用一句话描述什么是股票投资',
      '你是一位专业的投资顾问',
      { max_tokens: 100, temperature: 0.5 }
    );
    
    console.log('✅ AI文本生成成功');
    console.log(`💬 AI回复: ${response}`);
    return true;
  } catch (error) {
    console.error('❌ AI文本生成测试失败:', error);
    return false;
  }
}

async function runAllTests() {
  console.log('🚀 开始AI分析功能全面测试\n');
  
  const results = {
    connection: false,
    textGeneration: false,
    stockAnalysis: false,
    categoryAnalysis: false,
  };
  
  // 1. 测试API连接
  results.connection = await testAIConnection();
  
  if (!results.connection) {
    console.log('\n❌ API连接失败，跳过后续测试');
    console.log('\n💡 请检查以下配置:');
    console.log('   1. DEEPSEEK_API_KEY 环境变量是否正确设置');
    console.log('   2. DEEPSEEK_BASE_URL 是否可访问');
    console.log('   3. 网络连接是否正常');
    return;
  }
  
  // 2. 测试基础文本生成
  results.textGeneration = await testSimpleAIGeneration();
  
  // 3. 测试个股分析
  results.stockAnalysis = await testStockAIAnalysis();
  
  // 4. 测试大分类分析
  results.categoryAnalysis = await testCategoryAIAnalysis();
  
  // 输出测试总结
  console.log('\n📋 测试结果总结:');
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
  console.log(`🔗 API连接测试:     ${results.connection ? '✅ 通过' : '❌ 失败'}`);
  console.log(`🤖 文本生成测试:     ${results.textGeneration ? '✅ 通过' : '❌ 失败'}`);
  console.log(`📊 个股分析测试:     ${results.stockAnalysis ? '✅ 通过' : '❌ 失败'}`);
  console.log(`🏢 大分类分析测试:   ${results.categoryAnalysis ? '✅ 通过' : '❌ 失败'}`);
  
  const passedTests = Object.values(results).filter(Boolean).length;
  const totalTests = Object.keys(results).length;
  
  console.log(`\n🎯 总体结果: ${passedTests}/${totalTests} 项测试通过`);
  
  if (passedTests === totalTests) {
    console.log('🎉 所有测试通过！AI分析功能已成功集成');
  } else {
    console.log('⚠️  部分测试失败，请检查相关配置和日志');
  }
}

// 如果直接运行此脚本，执行测试
if (require.main === module) {
  runAllTests()
    .then(() => {
      console.log('\n测试完成');
      process.exit(0);
    })
    .catch((error) => {
      console.error('\n测试过程中发生错误:', error);
      process.exit(1);
    });
}